using System.ComponentModel.DataAnnotations;
using Matrix.Notification.Domain.Shared.Notifications;

namespace Matrix.Notification.Notifications.Dto
{
    /// <summary>
    /// 创建更新通知DTO
    /// </summary>
    public class CreateUpdateNotificationDto
    {
        /// <summary>
        /// 标题
        /// </summary>
        [Required]
        [StringLength(200)]
        public string Title { get; set; } = string.Empty;

        /// <summary>
        /// 内容
        /// </summary>
        [Required]
        [StringLength(2000)]
        public string Content { get; set; } = string.Empty;

        /// <summary>
        /// 通知类型
        /// </summary>
        public NotificationType Type { get; set; }

        /// <summary>
        /// 通知优先级
        /// </summary>
        public NotificationPriority Priority { get; set; }

        /// <summary>
        /// 通知渠道
        /// </summary>
        public NotificationChannel Channel { get; set; }

        /// <summary>
        /// 接收者ID
        /// </summary>
        public Guid? RecipientId { get; set; }

        /// <summary>
        /// 接收者邮箱
        /// </summary>
        [EmailAddress]
        public string? RecipientEmail { get; set; }

        /// <summary>
        /// 接收者电话号码
        /// </summary>
        public string? RecipientPhoneNumber { get; set; }

        /// <summary>
        /// 发送者ID
        /// </summary>
        public Guid? SenderId { get; set; }

        /// <summary>
        /// 发送者名称
        /// </summary>
        public string? SenderName { get; set; }

        /// <summary>
        /// 模板ID
        /// </summary>
        public Guid? TemplateId { get; set; }

        /// <summary>
        /// 参数
        /// </summary>
        public string? Parameters { get; set; }

        /// <summary>
        /// 计划发送时间
        /// </summary>
        public DateTime? ScheduledTime { get; set; }
    }
}